#include <QString>
#include <QDomDocument>

#define MSGFACTORY_PARA_NUM 64

class MsgFactory
{
public:
	void fromStr(int type, void* &ptr, QString &txt);
	QString toStr(int type, void* &ptr);

	QString setValue(QDomElement &item);
	QString getValue(QDomElement &item);
	
	void gen_Logon_req(void *&ptr, QString &txt);
	void gen_Logon_rsp(void *&ptr, QString &txt);
	void gen_Logout_req(void *&ptr, QString &txt);
	void gen_Logout_rsp(void *&ptr, QString &txt);
	void gen_Register_req(void *&ptr, QString &txt);
	void gen_Register_rsp(void *&ptr, QString &txt);
	void gen_UnRegister_req(void *&ptr, QString &txt);
	void gen_UnRegister_rsp(void *&ptr, QString &txt);
	void gen_Notify_req(void *&ptr, QString &txt);
	void gen_Notify_rsp(void *&ptr, QString &txt);
	void gen_Handover_req(void *&ptr, QString &txt);
	void gen_Handover_rsp(void *&ptr, QString &txt);
	void gen_Takeover_req(void *&ptr, QString &txt);
	void gen_Takeover_rsp(void *&ptr, QString &txt);
	void gen_Subscribe_req(void *&ptr, QString &txt);
	void gen_Subscribe_rsp(void *&ptr, QString &txt);
	void gen_UnSubscribe_req(void *&ptr, QString &txt);
	void gen_UnSubscribe_rsp(void *&ptr, QString &txt);
	void gen_ForceLogout_req(void *&ptr, QString &txt);
	void gen_ForceLogout_rsp(void *&ptr, QString &txt);
	
	void str_Logon_req(void *ptr, QString &txt);
	void str_Logon_rsp(void *ptr, QString &txt);
	void str_Logout_req(void *ptr, QString &txt);
	void str_Logout_rsp(void *ptr, QString &txt);
	void str_Register_req(void *ptr, QString &txt);
	void str_Register_rsp(void *ptr, QString &txt);
	void str_UnRegister_req(void *ptr, QString &txt);
	void str_UnRegister_rsp(void *ptr, QString &txt);
	void str_Notify_req(void *ptr, QString &txt);
	void str_Notify_rsp(void *ptr, QString &txt);
	void str_Handover_req(void *ptr, QString &txt);
	void str_Handover_rsp(void *ptr, QString &txt);
	void str_Takeover_req(void *ptr, QString &txt);
	void str_Takeover_rsp(void *ptr, QString &txt);
	void str_Subscribe_req(void *ptr, QString &txt);
	void str_Subscribe_rsp(void *ptr, QString &txt);
	void str_UnSubscribe_req(void *ptr, QString &txt);
	void str_UnSubscribe_rsp(void *ptr, QString &txt);
	void str_ForceLogout_req(void *ptr, QString &txt);
	void str_ForceLogout_rsp(void *ptr, QString &txt);
	
	QDomElement& addElement(QDomDocument &doc, QDomElement &parent, QString name, QString value);
	
	QByteArray encode(int type, void *ptr);
	void* decode(int type, QByteArray buff);
	
	char* strmsgname(int type);
	int msgnametostr(QString name);

	QString mParaArray[MSGFACTORY_PARA_NUM];
};


